//////////////////////////////////////////////////////////////////////////
public:
	/// <summary>
	/// Retrieves graph vertex by given index
	/// </summary>
	/// <param name="graph"></param>
	/// <param name="idx"></param>
	/// <returns></returns>
	static IntPtr GetGraphVtx(IntPtr graph, int idx)
	{
		return IntPtr(cvGetGraphVtx(graph.ToPointer(), idx));
	}

	/// <summary>
	/// Retrieves index of a graph vertex given its pointer
	/// </summary>
	/// <param name="graph"></param>
	/// <param name="idx"></param>
	/// <returns></returns>
	static int GraphVtxIdx(IntPtr graph, IntPtr vtx)
	{
		return cvGraphVtxIdx(graph.ToPointer(), (CvGraphVtx*)vtx.ToPointer()) ;
	}

	/// <summary>
	/// Retrieves index of a graph edge given its pointer
	/// </summary>
	/// <param name="graph"></param>
	/// <param name="idx"></param>
	/// <returns></returns>
	static int GraphEdgeIdx(IntPtr graph, IntPtr edge)
	{
		return cvGraphEdgeIdx(graph.ToPointer(), (CvGraphEdge*)edge.ToPointer()) ;
	}

	/// <summary>
	/// Retrieves count of a graph vertex
	/// </summary>
	/// <param name="graph"></param>
	/// <returns></returns>
	static int GraphGetVtxCount(IntPtr graph)
	{
		return cvGraphGetVtxCount((CvGraph*)graph.ToPointer()) ;
	}

	/// <summary>
	/// Retrieves count of a Edge vertex
	/// </summary>
	/// <param name="graph"></param>
	/// <returns></returns>
	static int GraphGetEdgeCount(IntPtr graph)
	{
		return cvGraphGetEdgeCount((CvGraph*)graph.ToPointer()) ;
	}

	/// <summary>
	/// CV_IS_GRAPH_VERTEX_VISITED
	/// </summary>
	/// <param name="vtx"></param>
	/// <returns></returns>
	static bool IS_GRAPH_VERTEX_VISITED(IntPtr vtx)
	{
		return CV_IS_GRAPH_VERTEX_VISITED(vtx.ToPointer()) != 0;
	}

	/// <summary>
	/// CV_IS_GRAPH_EDGE_VISITED
	/// </summary>
	/// <param name="edge"></param>
	/// <returns></returns>
	static bool IS_GRAPH_EDGE_VISITED(IntPtr edge)
	{
		return CV_IS_GRAPH_EDGE_VISITED(edge.ToPointer()) != 0;
	}

	/// <summary>
	/// CV_NEXT_LINE_POINT
	/// </summary>
	/// <param name="line_iterator"></param>
	static void NEXT_LINE_POINT(IntPtr line_iterator)
	{
		CvLineIterator& line_iterator_ref = *(CvLineIterator*)line_iterator.ToPointer();
		CV_NEXT_LINE_POINT(line_iterator_ref)
	}

	/// CV_RGB
	/// </summary>
	static NAMESPACE::Scalar Rgb(double r, double g, double b) 
	{
		return *(NAMESPACE::Scalar*)&cvScalar((b), (g), (r), 0); 
	}


	//////////////////////////////////////////////////////////////////////////